/*******************************************************************************
* Copyright (c) 2006, 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Mikael Barbero (Eclipse Foundation) - Bug 254570
******************************************************************************/
package org.eclipse.jface.tests.viewers;
import java.util.ArrayList;
import java.util.Arrays;
import org.eclipse.jface.tests.viewers.StructuredSelectionTest.EqualsHashCodeContractTestHelper;
import org.eclipse.jface.viewers.IElementComparer;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.TreeSelection;
import junit.framework.TestCase;
/**
* @since 3.2
*
*/
public class TreeSelectionTest extends TestCase {
public TreeSelectionTest(String name) {
super(name);
}
public void testNewWithEmptyTreePath() {
assertNotNull(new TreeSelection(new TreePath(new Object[0])));
}
public void testBug1384558() {
Object one = new Object();
Object two = new Object();
Object three = new Object();
TreePath[] treePaths1 = new TreePath[3];
treePaths1[0] = new TreePath(new Object[]{one, two});
treePaths1[1] = new TreePath(new Object[]{one, three});
treePaths1[2] = new TreePath(new Object[]{two, two});
TreeSelection treeSelection1 = new TreeSelection(treePaths1);
TreePath[] treePaths2 = new TreePath[2];
treePaths2[0] = new TreePath(new Object[]{one, two});
treePaths2[1] = new TreePath(new Object[]{one, three});
TreeSelection treeSelection2 = new TreeSelection(treePaths2);
// before fixing the bug, this threw an AIOOBE:
assertFalse(treeSelection1.equals(treeSelection2));
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(treeSelection1, treeSelection2);
}
public void testEquals1() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection(), new TreeSelection());
}
public void testEquals2() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection((TreePath) null),
new TreeSelection((TreePath) null));
}
public void testEquals3() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection((TreePath[]) null),
new TreeSelection((TreePath[]) null));
}
public void testEquals4() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection(new TreePath[0]),
new TreeSelection(new TreePath[0]));
}
public void testEquals5() {
Object one = new Object();
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection(newTreePath(one)),
new TreeSelection(newTreePath(one)));
}
public void testEquals6() {
Object one = new Object();
Object two = new Object();
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(new TreeSelection(newTreePath(one)),
new TreeSelection(newTreePath(two)));
}
public void testEquals7() {
Object one = new Object();
Object two = new Object();
Object three = new Object();
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection(newTreePath(one, two, three)),
new TreeSelection(newTreePath(one, two, three)));
}
public void testEquals8() {
Object one = new Object();
Object two = new Object();
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(new TreeSelection(newTreePath(one, two)),
new TreeSelection(newTreePath(two, one)));
}
public void testEquals9() {
Object one = new Object();
Object two = new Object();
Object three = new Object();
Object four = new Object();
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection(newTreePaths(newTreePath(one, two), newTreePath(three, four))),
new TreeSelection(newTreePaths(newTreePath(one, two), newTreePath(three, four))));
}
public void testEquals10() {
Object one = new Object();
Object two = new Object();
Object three = new Object();
Object four = new Object();
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(
new TreeSelection(newTreePaths(newTreePath(one, two), newTreePath(three, four))),
new TreeSelection(newTreePaths(newTreePath(three, four), newTreePath(one, two))));
}
public void testEquals11() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection(), new StructuredSelection());
}
public void testEquals12() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection((TreePath) null),
new StructuredSelection());
}
public void testEquals13() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(new TreeSelection(newTreePath("element")),
new StructuredSelection("element"));
}
public void testEquals14() {
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(new TreeSelection(newTreePath("element 1")),
new StructuredSelection("element 2"));
}
public void testEquals15() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection(newTreePath("element 1", "element 2")),
new StructuredSelection(Arrays.asList("element 2")));
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection(newTreePath("element 1", "element 2")),
new StructuredSelection(new Object[] { "element 2", }));
}
public void testEquals16() {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection(
newTreePaths(newTreePath("element 1", "element 2"), newTreePath("element 3", "element 4"))),
new StructuredSelection(Arrays.asList("element 2", "element 4")));
}
public void testEquals17() {
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(
new TreeSelection(
newTreePaths(newTreePath("element 1", "element 2"), newTreePath("element 3", "element 4"))),
new StructuredSelection(Arrays.asList("element 4", "element 2")));
}
public void testEquals18() {
doTestEquals18(StructuredSelectionTest.JAVA_LANG_OBJECT_COMPARER);
doTestEquals18(StructuredSelectionTest.IDENTITY_COMPARER);
}
private void doTestEquals18(IElementComparer comparer) {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection((TreePath) null, comparer), new StructuredSelection(new ArrayList<>(), comparer));
}
public void testEquals19() {
doTestEquals19(StructuredSelectionTest.JAVA_LANG_OBJECT_COMPARER);
doTestEquals19(StructuredSelectionTest.IDENTITY_COMPARER);
}
private void doTestEquals19(IElementComparer comparer) {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection(newTreePath("element 1", "element 2"), comparer),
new StructuredSelection(Arrays.asList("element 2"), comparer));
}
public void testEquals20() {
doTestEquals20(StructuredSelectionTest.JAVA_LANG_OBJECT_COMPARER);
doTestEquals20(StructuredSelectionTest.IDENTITY_COMPARER);
}
private void doTestEquals20(IElementComparer comparer) {
EqualsHashCodeContractTestHelper.testExpectedEqualsObjects(
new TreeSelection(
newTreePaths(newTreePath("element 1", "element 2"), newTreePath("element 3", "element 4")),
comparer),
new StructuredSelection(Arrays.asList("element 2", "element 4"), comparer));
}
public void testEquals21() {
doTestEquals21(StructuredSelectionTest.JAVA_LANG_OBJECT_COMPARER);
doTestEquals21(StructuredSelectionTest.IDENTITY_COMPARER);
}
private void doTestEquals21(IElementComparer comparer) {
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(
new TreeSelection(newTreePath("element 1"), comparer),
new StructuredSelection(Arrays.asList("element 2"), comparer));
}
public void testEquals22() {
doTestEquals22(StructuredSelectionTest.JAVA_LANG_OBJECT_COMPARER);
doTestEquals22(StructuredSelectionTest.IDENTITY_COMPARER);
}
private void doTestEquals22(IElementComparer comparer) {
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(
new TreeSelection(newTreePath("element 1"), comparer),
new StructuredSelection(new ArrayList<>(), comparer));
}
public void testEquals23() {
doTestEquals23(StructuredSelectionTest.JAVA_LANG_OBJECT_COMPARER);
doTestEquals23(StructuredSelectionTest.IDENTITY_COMPARER);
}
private void doTestEquals23(IElementComparer comparer) {
EqualsHashCodeContractTestHelper.testExpectedNotEqualsObjects(new TreeSelection((TreePath) null, comparer),
new StructuredSelection(Arrays.asList("element"), comparer));
}
private static TreePath newTreePath(Object... args) {
return new TreePath(args);
}
private static TreePath[] newTreePaths(TreePath... args) {
return args;
}
}